package cn.bytepath.base.mapper;


import cn.bytepath.base.query.BaseQuery;

import java.util.List;

/**
 * mapper的基类
 * @author Jack.C
 * @createDate 2022-01-24
 * @version 1.0
 */
public interface BaseMapper<T> {
    /**
     * 查询表中所有对象
     * @return: java.util.List<T>
     * @update 2022/1/24
     */
    List<T> findAll();

    /**
     * 根据id查询表中对象
     * @param id 对象id
     * @return: T 对象
     * @update 2022/1/24
     */
    T findById(Long id);

    /**
     * 保存新的对象到表中
     * @param t 保存对象,不带id
     * @update 2022/1/24
     */
    void save(T t);

    /**
     * 更新表中对应的信息
     * @param t 修改对象,带id
     * @update 2022/1/24
     */
    void update(T t);

    /**
     * 根据id删除表中的数据
     * @param id id
     * @update 2022/1/24
     */
    void delete(Long id);

    /**
     * 高级查询,根据查询条件查询表中满足条件的对象集合
     * @param query 保存查询条件的对象
     * @return: java.util.List<T> 对象集合
     * @update 2022/1/24
     */
    List<T> findByQuery(BaseQuery query);

    /**
     * 查询满足查询条件的对象的条数
     * @param query
     * @return: java.lang.Long 查到的对象条数
     * @update 2022/1/24
     */
    Long countQuery(BaseQuery query);

    /**
     * 根据id批量删除数据库表中的记录
     * @param ids long数组集合,装有id
     * @update 2022/1/24
     */
    void deleteBatch(Long[] ids);
}
